iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 23
0

在hard margin的情況,其實就是我們不允許任何錯誤分類發生,這也是為什麼必須要在線性可分的情況下才能使用,不然永遠不會得到結果。而soft margin就是可以允許錯誤發生,那要怎麼樣允許錯誤發生呢?其實就是多導入一個slack variable

我們把這個條件

改成

那個怪怪的念 xi,xi 一定要大於等於零, xi 就是slack varialbe,他的值如下圖所示(圖片出自:PRML - p332)

也就是當正確的時候會是零,在邊界裡面但還是為的會小於一,錯誤開始就大於一。

接著我們把hard margin的這個最佳化問題

也加入slack variable,改成最小化下面這個式子

其中 C 是我們設定要懲罰那些犯錯的點的參數,C越大懲罰越重,而 C 到無限大的情況就會讓我們回到hard margin SVM。接著一樣利用Lagrange Multiplier的的方式寫下

接著分別對 w , b, xi微分,並且令為零,得最佳解條件



因為 mu 也是langrange乘數,所以非負,因此

一樣透過KKT condition得到兩個充要條件

因此我們的 a 會有三種狀況,分別會是

  • a = 0:分類正確的
  • 0 < a < C:故 mu 大於零,因此 xi 是零,也就是這種資料會剛剛好在邊界上 (y = +- 1的位子)
  • a = C:xi > 0,這種資料會在邊界裡面以及錯誤分類的區域

後面兩種就是我們這邊的 support vector,我們這邊必須利用第二種support vector來計算 b。

所以我們這邊的SVM流程跟hard margin一樣

  • 以smo算出 a ,便可得到 support vector兩種
  • 利用0< a < C的那種support vector計算 b ,一樣利用昨天的式子算。
  • 為分類邊界(正負值對應二元分類)

這就是soft margin SVM的作法。


上一篇
SVM - Hard Margin
下一篇
SVM - Regression
系列文
機器學習你也可以 - 文組帶你手把手實做機器學習聖經30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言